package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * 课程基础api
 * <p>
 * 课程基本信息 Api 接口
 * </p>
 *
 * @author lily
 * @date 2021/12/08
 */
@Api(value = "课程基本信息Api接口", tags = "内容-课程基本业务信息Api接口", description = "课程基本业务信息Api接口")
public interface CourseBaseApi {

    /**
     * 查询全部课程信息
     *
     * @return {@link List}
     */
    @ApiOperation("查询全部课程信息")
    List queryAll();


    /**
     * 分页条件查询课程基本信息（机构和运营平台共用，自定义一个常量值）
     *
     * @param params 分页参数
     * @param model  查询请求参数
     * @return com.xuecheng.common.domain.page.PageVO
     * @author Lily
     * @date 2021/12/8 20:35
     * @paramType [com.xuecheng.common.domain.page.PageRequestParams, com.xuecheng.api.content.model.qo.QueryCourseModel]
     * @description
     */
    @ApiOperation("分页条件查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseModel model);


    /**
     * 创建基础课程内容
     *
     * @param courseBaseVO CourseBaseVO 前端传递过来的数据
     * @return com.xuecheng.api.content.model.dto.CourseBaseDTO
     * @author Lily
     * @date 2021/12/11 16:25
     * @paramType [com.xuecheng.api.content.model.vo.CourseBaseVO]
     * @description
     */
    @ApiOperation("保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO", value = "课程基本信息", required = true, type = "CourseBaseVO", paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);


    /**
     * 修改基础课程内容
     *
     * @param courseBaseVO CourseBaseVO 前端传递过来的数据
     * @return com.xuecheng.api.content.model.dto.CourseBaseDTO
     * @author Lily
     * @date 2021/12/11 16:25
     * @paramType [com.xuecheng.api.content.model.vo.CourseBaseVO]
     * @description
     */
    @ApiOperation("修改课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO", value = "课程基本信息", required = true, type = "CourseBaseVO", paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);


    /**
     * 删除课程基础
     *
     * @param courseBaseId 课程基础id
     * @author Lily
     * @date 2021/12/11 22:56
     * @paramType [java.lang.Long]
     * @description
     */
    @ApiOperation("根据Id删除课程")
    @ApiImplicitParam(name = "courseBaseId", value = "课程id值", required = true, type = "Long", paramType = "path")
    void removeCourseBase(Long courseBaseId);


    /**
     * 提交课程基础
     *
     * @param courseBaseId 课程基础id
     * @author Lily
     * @date 2021/12/13 20:10
     * @paramType [java.lang.Long]
     * @description
     */
    @ApiOperation(value = "提交审核")
    @ApiImplicitParam(name = "courseBaseId", value = "课程ID", required = true, dataType = "Long", paramType = "query", example = "1")
    void commitCourseBase(Long courseBaseId);


}